package com.hb.core.pojo.expert.dto;

import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import com.hb.core.pojo.parent.CopyOperation;
import lombok.Getter;
import lombok.Setter;
import org.fzzn.core.util.encrypt.PinyinUtil;

import java.util.regex.Pattern;

/**
 * 私有化专家库登录用户数据传说对象
 *
 * @author zhaojk
 */
@Setter
@Getter
public class ExpertUserDTO implements CopyOperation {
    /**
     * 组织机构Id(企业id)，冗余字段，与部门指向的企业对应
     */
    private Long orgId;
    /**
     * 组织机构名称
     */
    private String orgName;

    /**
     * 用户名
     */
    private String username;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 姓名
     */
    private String fullName;

    /**
     * 密码(密文)
     */
    private String password;

    /**
     * 密码(明文)
     */
    private String plaintextPassword;

    /**
     * 盐值
     */
    private String saltSource;

    /**
     * 用户状态(1: 正常, 2: 禁用)
     */
    private Integer userStatus;

    /**
     * 中英文括号替换正则表达式
     */
    private final static Pattern REG_BRACKETS = Pattern.compile("[\\(（\\)）]");

    /**
     * 生成自定义的私有专家帐号
     *
     * @return
     * @author zhaojk
     */
    public void generateAccount() {
        if (StrUtil.isEmpty(orgName)) {
            return;
        }
        // 生成帐号  企业名称首字母 + 4位随机码
        String firstHeadChar = PinyinUtil.getHeadChar(orgName);
        // 将企业名称中的中英文括号替换为空字符串
        String account = ReUtil.replaceAll(firstHeadChar, REG_BRACKETS, StrUtil.EMPTY);

        String randomCode = RandomUtil.randomNumbers(4);
        this.setUsername(account + randomCode);
    }

}
